package com.soulgame.sms;

import android.app.Application;
import android.content.Context;
import android.content.res.Configuration;

import com.secneo.mmb.Helper;
import com.soul.sdk.common.IApplicationListener;
import com.soul.sdk.utils.SGDebug;
import com.soulgame.sms.common.PayTypeConfig;
import com.soulgame.sms.contant.PayType;
import com.unicom.shield.UnicomApplicationWrapper;

/**
 * @author lch
 * @version Create time：2017-1-3
 * @类说明:
 */
public class ApplicationProxySms extends UnicomApplicationWrapper implements IApplicationListener {
	// UnicomApplicationWrapper
	// 为联通的Application包装类，通过反编译发现其实现了attachBaseContext、onCreate、onConfigurationChanged、onLowMemory
	// 此类并不直接配置，而是通过 IApplicationListener 里的方法调用其实现过的方法。

	@Override
	public void onProxyAttachBaseContext(Application pApplication, Context base) {

		SGDebug.print_v("*********ApplicationProxySms onProxyAttachBaseContext*********");
		// WOSHOP
		if (PayTypeConfig.getInstance(base).isSupportPayType(PayType.WOSHOP)
				|| PayType.WOSHOP.equals(PayTypeConfig.getInstance(base).getDefaultPayType())) {
			// 接入了联通，并且是联通卡的时候或者被配置为缺省支付类型时
			this.attachBaseContext(base);
		}

		// MM
		if (PayTypeConfig.getInstance(base).isSupportPayType(PayType.MM)
				|| PayType.MM.equals(PayTypeConfig.getInstance(base).getDefaultPayType())) {
			// 接入了 mm，并且是移动卡的时候，或者被配置为缺省支付类型时
			Helper.install(pApplication);
		}

	}

	@Override
	public void onProxyCreate(Application pApplication) {
		
		SGDebug.print_v("*********ApplicationProxySms onProxyCreate*********");

		if (PayTypeConfig.getInstance(pApplication).isExistPayType(PayType.MIGU)) {
			// 因为咪咕SDK存在特殊闪屏情况，所以只要工程接入了咪咕就要加载咪咕so文件，
			// 哪怕是后面没有进行咪咕初始化或者支付（例如非移动卡的情况）
			System.loadLibrary("megjb");
		}

		if (PayTypeConfig.getInstance(pApplication).isSupportPayType(PayType.WOSHOP)
				|| PayType.WOSHOP.equals(PayTypeConfig.getInstance(pApplication).getDefaultPayType())) {
			// 接入了联通，并且是联通卡的时候或者被配置为缺省支付类型时
			this.onCreate();
		}
	}

	@Override
	public void onProxyConfigurationChanged(Application pApplication, Configuration newConfig) {
		
		SGDebug.print_v("*********ApplicationProxySms onProxyConfigurationChanged*********");

		if (PayTypeConfig.getInstance(pApplication).isSupportPayType(PayType.WOSHOP)
				|| PayType.WOSHOP.equals(PayTypeConfig.getInstance(pApplication).getDefaultPayType())) {
			// 接入了联通，并且是联通卡的时候或者被配置为缺省支付类型时
			this.onConfigurationChanged(newConfig);
		}
	}

	@Override
	public void onProxyTerminate(Application pApplication) {
		
		SGDebug.print_v("*********ApplicationProxySms onProxyTerminate*********");

	}

	@Override
	public void onProxyLowMemory(Application pApplication) {
		
		SGDebug.print_v("*********ApplicationProxySms onProxyLowMemory*********");
		
		if (PayTypeConfig.getInstance(pApplication).isSupportPayType(PayType.WOSHOP)
				|| PayType.WOSHOP.equals(PayTypeConfig.getInstance(pApplication).getDefaultPayType())) {
			// 接入了联通，并且是联通卡的时候或者被配置为缺省支付类型时
			this.onLowMemory();
		}
	}

	// =============================================
	// UnicomApplicationWrapper start
	// =============================================
	@Override
	protected void attachBaseContext(Context arg0) {
		super.attachBaseContext(arg0);
	}

	@Override
	public void onCreate() {
		super.onCreate();
	}

	@Override
	public void onConfigurationChanged(Configuration arg0) {
		super.onConfigurationChanged(arg0);
	}

	@Override
	public void onLowMemory() {
		super.onLowMemory();
	}
	// =============================================
	// UnicomApplicationWrapper end
	// =============================================
}
